In networking systems, classification engines can be used to determine an action to perform and/or a rule to apply to a particular packet. Such classification can include the use of a lookup function, which can be implemented as a hardware “search engine” or the like. Such search engines can include content addressable memory (CAM) and/or a standard memory, such as static random access memory (SRAM). The standard memory is commonly accessed using “hashing” to essentially provide a “many-to-one” function. Such an approach can allow for a smaller memory size so that overall system costs can be reduced. Further, types of CAM include “ternary” CAM, which can allow for matching one of three possible storage states: 0, 1, or “x” (i.e., a “don't care” term).
A search key applied to a search engine can result in several “hit” or “miss” indications. If the search key is found (i.e., a “match” occurs) at multiple locations within the memory system, a priority or “precedence” determination must be employed in order to provide an overall winner. Further, the overall winner in a system or a subsystem may be used to determine an action to be performed on a packet. Referring now to FIG. 1, a block diagram of a conventional action selection system is shown and indicated by the general reference character 100. The search key “Key” can be applied to Search Engine 102, which provides Search Results, including hit or miss indications, to Precedence Determination 104. Of course, this precedence determination may be integrated with the search engine. In any event, the precedence determination can choose a highest priority hit indication (e.g., Winning Hit) from among multiple hit indications. The winning hit can be provided to Action Select 106, which can provide an “Action” to be performed on a packet.
A limitation of this conventional approach is its scalability: as the number of types of actions is increased, the approach becomes less viable. Also, even though some action types are orthogonal (i.e., unrelated in nature) to each other, they are all included in the same action set in this approach and, as a result, the overall system is not efficient for a large number of possible actions. Consequently, what is needed is an action group generation and arbitration approach that allows flexibility in selecting appropriate actions to perform on a packet based on hit results from different matched rules or search patterns.